package br.edu.com1263.dao;

import java.util.Collection;

import javax.persistence.Query;

import br.edu.com1263.model.Voto;

public class VotoDAOImpl extends AbstractDAO implements VotoDAO{
	
	public VotoDAOImpl(){

}

	@Override
	public Collection<Voto> consultarTodos() {
		Query query = manager.createQuery("SELECT v FROM Voto v");
		return query.getResultList();
	}

	@Override
	public void salvar(Voto votado) {
		manager.persist(votado);
		
	}
	
	
	public void alterar(Voto votado) {
		manager.merge(votado);
	}
    
    public void remover(Voto votado) {
		manager.remove(votado);
	}

	@Override
	public Voto consultar(Long id) {
		return manager.find(Voto.class, id);
	}
	
	@Override
	public boolean votou(Long idAluno, Long idTarefa) {
		Query query = manager.createQuery("SELECT v FROM Voto v WHERE v.aluno.id = :idAluno " +
				"AND v.postado.tarefa.id = :idTarefa");
		query.setParameter("idAluno", idAluno);
		query.setParameter("idTarefa", idTarefa);
		
		if (query.getResultList() != null && query.getResultList().size() > 0)
			return true;
		return false;
	}
	
	@Override
	public Collection<Voto> consultarTrabalhosAluno(Long idAluno) {
		Query query = manager.createQuery("SELECT v FROM Voto v WHERE v.postado.aluno.id = :idAluno ");
		query.setParameter("idAluno", idAluno);

		return query.getResultList();
	}

	@Override
	public Collection<Voto> consultarTrabalhosTurma(Long idTarefa) {
		Query query = manager.createQuery("SELECT v FROM Voto v WHERE v.postado.tarefa.id = :idTarefa ");
		query.setParameter("idTarefa", idTarefa);

		return query.getResultList();
	}

}
